#include "stdafx.h"
#include "CoverBTCIFStream.h"

CoverBTCIFStream::CoverBTCIFStream()
{
}

CoverBTCIFStream::~CoverBTCIFStream()
{
	Close();
}

/////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////

bool CoverBTCIFStream::Open(const wchar_t* lpszFileName /* = NULL */)
{
	if(!lpszFileName)
		return false;

	// Try to open/create file.
	if (m_File.Open( lpszFileName, CFile::modeRead))
	{
		return TRUE;
	}

	return FALSE;
}

/////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////

int CoverBTCIFStream::Close()
{
	if( IsOpen())
		m_File.Close();

	return 0;
}

/////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////

long CoverBTCIFStream::Read(void* pData, long lCount)
{
	if(!IsOpen())
		return -1;

	return m_File.Read( pData, lCount);
}

/////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////

long CoverBTCIFStream::Seek(long lOffset, unsigned int nOrigin)
{
	if(!IsOpen())
		return -1;

	switch( nOrigin)
	{
		case Begin:		nOrigin = CFile::begin;
						break;

		case Current:	nOrigin = CFile::current;
						break;

		case End:		nOrigin = CFile::end;
						break;
	}

	return m_File.Seek( lOffset, nOrigin);
}

/////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////

bool CoverBTCIFStream::IsOpen()
{
	return m_File.m_hFile != CFile::hFileNull;
}

/////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////

long CoverBTCIFStream::GetPosition()
{
	return m_File.GetPosition();
}

/////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////

long CoverBTCIFStream::GetSize()
{
	return m_File.GetLength();
}